package br.com.mural.android.webservice;

import java.util.ArrayList;
import java.util.List;

import br.com.mural.android.entidades.Usuario;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;

public class UsuarioRest {
	private String URL_WS = WebServiceMural.URL_WS + "usuario/";

	public Usuario getUsuario(int id) throws Exception {

		String[] resposta = new WebServiceMural().get(URL_WS + id);

		if (resposta[0].equals("200")) {
			Gson gson = new Gson();
			Usuario usuario = gson.fromJson(resposta[1], Usuario.class);
			return usuario;
		} else {
			throw new Exception(resposta[1]);
		}
	}

	public Usuario login(String login, String senha) throws Exception {

		String[] resposta = new WebServiceMural().get(URL_WS + "autentica/" + login	+ "/" + senha);
		if (resposta[0].equals("200")) {
			Gson gson = new Gson();
			Usuario usuario = gson.fromJson(resposta[1], Usuario.class);
			return usuario;
		} else {
			throw new Exception(resposta[1]);
		}
	}

	public List<Usuario> getListaUsuario() throws Exception {

		String[] resposta = new WebServiceMural().get(URL_WS + "buscarTodosGSON");

		if (resposta[0].equals("200")) {
			Gson gson = new Gson();
			ArrayList<Usuario> listaUsuario = new ArrayList<Usuario>();
			JsonParser parser = new JsonParser();
			JsonArray array = parser.parse(resposta[1]).getAsJsonArray();

			for (int i = 0; i < array.size(); i++) {
				listaUsuario.add(gson.fromJson(array.get(i), Usuario.class));
			}
			return listaUsuario;
		} else {
			throw new Exception(resposta[1]);
		}
	}

	public List<Usuario> getListaUsuarioPorPontuacao() throws Exception {

		String[] resposta = new WebServiceMural().get(URL_WS + "buscarTodosPorPontuacaoGSON");

		if (resposta[0].equals("200")) {
			Gson gson = new Gson();
			ArrayList<Usuario> listaUsuario = new ArrayList<Usuario>();
			JsonParser parser = new JsonParser();
			JsonArray array = parser.parse(resposta[1]).getAsJsonArray();

			for (int i = 0; i < array.size(); i++) {
				listaUsuario.add(gson.fromJson(array.get(i), Usuario.class));
			}
			return listaUsuario;
		} else {
			throw new Exception(resposta[1]);
		}
	}

	public String inserirUsuario(Usuario usuario) throws Exception {

		Gson gson = new Gson();
		String usuarioJSON = gson.toJson(usuario);
		System.out.println("Usuario JSON: " + usuarioJSON);
		String[] resposta = new WebServiceMural().post(URL_WS + "inserir", usuarioJSON);

		if (resposta[0].equals("200")) {
			return resposta[1];
		} else {
			throw new Exception(resposta[1]);
		}
	}

	public String deletarUsuario(int id) {
		String[] resposta = new WebServiceMural().get(URL_WS + "delete/" + id);
		return resposta[1];
	}

}
